package Day_0214.Tomcat;

/**
 * @author zxc
 * @date 2023/02/14 21:16
 **/
public class Tomcat_Garbage_Collection_Strategy {
    public static void main(String[] args) {
        /**
         * 垃圾回收策略调优
         * ===》
         * 1.垃圾回收的设置也是在 catalina.sh 中，调整 JAVA_OPTS 变量。
         * 具体设置如下：
         * JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100"
         *
         * 2.具体的垃圾回收策略及相应策略的各项参数如下：
         * 1）串行收集器（JDK1.5 以前主要的回收方式）
         *  -XX:+UseSerialGC:设置串行收集器
         *
         * 2）并行收集器（吞吐量优先）
         *  示例：
         *  java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100
         *
         * （3）-XX:+UseParallelGC：
         *  选择垃圾收集器为并行收集器。此配置仅对年轻代有效。
         *  即，上述配置下，年轻代使用并发收集，而年老代仍旧使用串行收集。
         *
         * （4）-XX:ParallelGCThreads=20：
         *  配置并行收集器的线程数，即：同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。
         *
         * （5）-XX:+UseParallelOldGC：
         *  配置年老代垃圾收集方式为并行收集。JDK6.0 支持对年老代并行收集
         *
         * （6）-XX:MaxGCPauseMillis=100:
         *  设置每次年轻代垃圾回收的最长时间，如果无法满足此时间，JVM 会自动调整年轻代大小，以满足此值。
         *
         * （7）-XX:+UseAdaptiveSizePolicy：
         *  设置此选项后，并行收集器会自动选择年轻代区大小和相应的 Survivor 区比例，
         *  以达到目标系统规定的最低相应时间或者收集频率等，此值建议使用并行收集器时，一直打开。
         *
         * 3）并发收集器（响应时间优先）
         * 示例： java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC
         *
         * （1）-XX:+UseConcMarkSweepGC：
         *  设置年老代为并发收集。测试中配置这个以后，
         *
         * （2）-XX:
         *  NewRatio=4 的配置失效了，原因不明。所以，此时年轻代大小最好用-Xmn设置。
         *
         * （3）-XX:+UseParNewGC:
         *  设置年轻代为并行收集。可与 CMS 收集同时使用。JDK5.0 以上，JVM 会根据系统配置自行设置，所以无需再设置此值。
         *
         * （4）-XX:CMSFullGCsBeforeCompaction：
         *  由于并发收集器不对内存空间进行压缩、整理，所以运行一段时间以后会产生“碎片”，使得运行效率降低。
         *  此值设置运行多少次 GC 以后对内存空间进行压缩、整理。
         *
         * （5）-XX:+UseCMSCompactAtFullCollection：
         *  打开对年老代的压缩。可能会影响性能，但是可以消除碎片
         *
         */
    }
}
